package net.lab1024.sa.admin.module.business.category.domain.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import net.lab1024.sa.admin.module.business.category.domain.entity.RecordDetail;
import net.lab1024.sa.admin.module.business.category.domain.entity.RetroResult;
import net.lab1024.sa.admin.module.business.category.domain.entity.RetroResult2;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 记录管理
 */
@Data
@Schema(description = "逆合成分析记录实体")
public class SynthesisRecordVO {

    @Schema(description = "主键id", required = true)
    private Long id;

    @Schema(description = "化学名称", required = true)
    private String chemicalName; // 原任务标题

    @Schema(description = "目标分子SMILES", required = true)
    private String targetSmiles;

//    @Schema(description = "逆合成分析结果，键为反应物组合，值为路径详情")
//    private Map<String, RetroResult.SynthesisPath> resultJson;
    @Schema(description = "逆合成详情(拓扑图)")
    private RetroResult2 retroResult2;

    @Schema(description = "逆合成分析结果")
    private String resultJson;

    @Schema(description = "模型名称")
    private String modelName; // 模型名称

    @Schema(description = "数据库名称")
    private String databaseName; // 数据库名称

    @Schema(description = "创建者姓名", required = true)
    private String creatorName;

    @Schema(description = "学号", required = true)
    private String creatorId;

    @Schema(description = "创建时间", required = true)
    private LocalDateTime createTime;

    @Schema(description = "创建时间(显示)", required = true)
    private String strCreateTime;

    @Schema(description = "更新时间", required = true)
    private LocalDateTime updateTime;

    @Schema(description = "更新时间(显示)", required = true)
    private String strUpdateTime;

    @Schema(description = "描述记录", required = true)
    private String remark;

    @Schema(description = "记录明细", example = "XX物质的N步合成过程")
    private String processDescription;

    @Schema(description = "明细列表", required = true)
    private List<RecordDetail> details;
}
